/* Глобальный структурный массив, расположенный в EEPROM,
   на что указывает ключевое слово eeprom перед struct */
/* Определение и инициализация */

eeprom struct eeprom_structure
{
int a; 		            // Объявляем целую переменную a
char b[10]; 			// Объявляем строковую переменную b
char c; 				// Объявляем символьную переменную c
} str_eep[2]={{12,"String",'x'}, {37,"word",'y'}}; 	// массив структурных
// переменных str_eep

/* Основная функция программы */

void main(void)
{
char k1,k2,k3,k4; 	// Объявляем символьные переменные k1,k2,k3,k4
int i1,i2; 			// Объявляем целые переменные i1,i2

/* определим указатель на структуру - ps */
struct eeprom_structure eeprom *ps;

/* прямой доступ к элементам структуры */

i1=str_eep[0].a; 		// Получим i1=12
k1=str_eep[0].b[1]; 	// Получим k1='t', второй символ строки
// "String", т.к. первый символ b[0]='S'
k2=str_eep[0].c; 		// Получим k2='x'
i2=str_eep[1].a; 		// Получим i2=37
k3=str_eep[1].b[3]; 	// Получим k3='d', четвертый символ строки
// "wor1d",т.к. первый символ b[0]='w',
// второй b[1]='o', третий b[2]='r'
k4=str_eep[1].c; 		// Получим k4='y'

/* тот же доступ к элементам структуры, используя указатель */

ps=&str_eep; 		// Инициализируем указатель с адресом структуры
i1=ps->a; 			// Получим i1=12
k1=ps->b[1]; 		// Получим k1='t', второй символ строки
// "String", т.к. первый символ b[0]='S'
k2=ps->c; 			// Получим k2='x'
++ps; 			// инкременируем (увеличиваем на 1) указатель
i2=ps->a; 			// Получим i2=37
k3=ps->b[3]; 		// Получим k3='d', четвертый символ строки
// "wor1d",т.к. первый символ b[0]='w',
// второй b[1]='o', третий b[2]='r'
k4=ps->c; 			// Получим k4='y'
}
